<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE MudletPackage>
<MudletPackage version="1.001">
	<TriggerPackage>
		<TriggerGroup isActive="yes" isFolder="yes" isTempTrigger="no" isMultiline="no" isPerlSlashGOption="no" isColorizerTrigger="no" isFilterTrigger="no" isSoundTrigger="no" isColorTrigger="no" isColorTriggerFg="no" isColorTriggerBg="no">
			<name>Roomname Capture</name>
			<script></script>
			<triggerType>0</triggerType>
			<conditonLineDelta>0</conditonLineDelta>
			<mStayOpen>0</mStayOpen>
			<mCommand></mCommand>
			<packageName></packageName>
			<mFgColor>#ff0000</mFgColor>
			<mBgColor>#ffff00</mBgColor>
			<mSoundFile></mSoundFile>
			<colorTriggerFgColor>#000000</colorTriggerFgColor>
			<colorTriggerBgColor>#000000</colorTriggerBgColor>
			<regexCodeList />
			<regexCodePropertyList />
			<Trigger isActive="yes" isFolder="no" isTempTrigger="no" isMultiline="no" isPerlSlashGOption="no" isColorizerTrigger="no" isFilterTrigger="no" isSoundTrigger="no" isColorTrigger="no" isColorTriggerFg="no" isColorTriggerBg="no">
				<name>Newest Roomname Capture</name>
				<script>-- Initialize theRoomTable and roomMatched flag
theRoomTable = theRoomTable or {}
roomMatched = roomMatched or false
saveTheRoomTable = saveTheRoomTable or {}
predictedRoomName = predictedRoomName or "UNKNOWN"

function findLastInstance(tbl, value)
  local lastIndex = nil
  for i = #tbl, 1, -1 do
    if tbl[i] == value then
      lastIndex = i
      break
    end
  end
  return lastIndex
end

local function name_search()
  local room_name
  if map.configs.custom_name_search then
    cecho(" &lt;yellow&gt;Custom Name Search is ENABLED!")
  else
    local line_count = #theRoomTable + 1
    local cur_line, last_line
    local prompt_pattern = map.save.prompt_pattern[map.character]
    if not prompt_pattern then
      return
    end
    while not room_name do
      line_count = line_count - 1
      if not theRoomTable[line_count] then
        break
      end
      cur_line = theRoomTable[line_count]
      if cur_line == "You wimp out, and attempt to flee!" then
        -- cecho("&lt;red&gt;flee line found")
        local lastFleeLine = findLastInstance(theRoomTable, "You wimp out, and attempt to flee!")
        --local fleeLine = table.index_of(theRoomTable,cur_line)
        -- echo("\n"..lastFleeLine)
        -- display(theRoomTable[lastFleeLine])
        local suspectedFleeRoomName = lastFleeLine + 1
        cecho("&lt;red&gt;This is the room you fled to: &lt;yellow&gt;" .. theRoomTable[suspectedFleeRoomName])
        --display(fleeLine)
        --display(theRoomTable[4])
        return theRoomTable[suspectedFleeRoomName]
      end
      for k, v in ipairs(map.save.ignore_patterns) do
        cur_line = string.trim(string.gsub(cur_line, v, ""))
      end
      -- Check if cur_line matches any pattern in map.ignore
      for _, ignore_pattern in ipairs(map.save.ignore_patterns or {}) do
        if string.find(cur_line, ignore_pattern) then
          -- Use the previous line as the room name
          cecho("DID THIS FIRE!?&lt;yellow&gt;ELEORIEJOREJ")
          if theRoomTable[line_count + 1] then
            room_name = string.trim(theRoomTable[line_count + 1])
          end
          break
        end
      end
      if room_name then
        break
      end
      if string.find(cur_line, prompt_pattern) then
        cur_line = string.trim(string.gsub(cur_line, prompt_pattern, ""))
        if cur_line ~= "" then
          room_name = cur_line
        else
          room_name = last_line
        end
      elseif line_count == 1 then
        cur_line = string.trim(cur_line)
        if cur_line ~= "" then
          room_name = cur_line
        else
          room_name = last_line
        end
      elseif not string.match(cur_line, "^%s*$") then
        last_line = cur_line
      end
    end
    theRoomTable = {}
    -- Reset buffer after processing
    if room_name == nil then
      cecho("&lt;red&gt;NIL ROOM_NAME!\n")
      room_name = predictedRoomName
    end
    room_name = room_name:sub(1, 100)
  end
  return room_name
end

-- Function to capture lines and determine the room name

function onLineCapture()
  local everything = matches[1]:trim()
  -- Capture the entire matched line
  table.insert(theRoomTable, everything)
  saveTheRoomTable = theRoomTable
  if everything:find("^Obvious exits:") then
    if not roomMatched then
      roomMatched = true
      local roomName = name_search()
      predictedRoomName = roomName
      --  cecho("&lt;yellow&gt; for Room Name: " .. roomName .. "\n")
      roomMatched = false
      -- Reset flag for the next room
    end
  end
end

onLineCapture()</script>
				<triggerType>0</triggerType>
				<conditonLineDelta>60</conditonLineDelta>
				<mStayOpen>500</mStayOpen>
				<mCommand></mCommand>
				<packageName></packageName>
				<mFgColor>#ff0000</mFgColor>
				<mBgColor>#ffff00</mBgColor>
				<mSoundFile></mSoundFile>
				<colorTriggerFgColor>#000000</colorTriggerFgColor>
				<colorTriggerBgColor>#000000</colorTriggerBgColor>
				<regexCodeList>
					<string>(.*)</string>
				</regexCodeList>
				<regexCodePropertyList>
					<integer>1</integer>
				</regexCodePropertyList>
				<Trigger isActive="yes" isFolder="no" isTempTrigger="no" isMultiline="no" isPerlSlashGOption="no" isColorizerTrigger="no" isFilterTrigger="no" isSoundTrigger="no" isColorTrigger="no" isColorTriggerFg="no" isColorTriggerBg="no">
					<name>Prompt for New Roomname Capture</name>
					<script>setTriggerStayOpen("Newest Roomname Capture", 0)
--[[
if map.currentName ~= predictedRoomName then
cecho("\n&lt;white&gt;map.currentName: &lt;cyan&gt;" .. map.currentName)
cecho("\n&lt;white&gt;Room name: &lt;cyan&gt;" .. predictedRoomName)
end
--]]
roomMatched = false
theRoomTable = {}
if predictedRoomName == "UNKNOWN" then
  predictedRoomName = roomname
  --cecho("\n&lt;yellow&gt;Changing room name to: &lt;cyan&gt;"..predictedRoomName)
end</script>
					<triggerType>0</triggerType>
					<conditonLineDelta>0</conditonLineDelta>
					<mStayOpen>0</mStayOpen>
					<mCommand></mCommand>
					<packageName></packageName>
					<mFgColor>#ff0000</mFgColor>
					<mBgColor>#ffff00</mBgColor>
					<mSoundFile></mSoundFile>
					<colorTriggerFgColor>#000000</colorTriggerFgColor>
					<colorTriggerBgColor>#000000</colorTriggerBgColor>
					<regexCodeList>
						<string></string>
					</regexCodeList>
					<regexCodePropertyList>
						<integer>7</integer>
					</regexCodePropertyList>
				</Trigger>
			</Trigger>
			<Trigger isActive="yes" isFolder="no" isTempTrigger="no" isMultiline="no" isPerlSlashGOption="no" isColorizerTrigger="no" isFilterTrigger="no" isSoundTrigger="no" isColorTrigger="no" isColorTriggerFg="no" isColorTriggerBg="no">
				<name>Peeking Should Not Move the Map</name>
				<script>disableTrigger("Newest Roomname Capture")
disableTrigger("Mapper Triggers")</script>
				<triggerType>0</triggerType>
				<conditonLineDelta>0</conditonLineDelta>
				<mStayOpen>999</mStayOpen>
				<mCommand></mCommand>
				<packageName></packageName>
				<mFgColor>#ff0000</mFgColor>
				<mBgColor>#ffff00</mBgColor>
				<mSoundFile></mSoundFile>
				<colorTriggerFgColor>#000000</colorTriggerFgColor>
				<colorTriggerBgColor>#000000</colorTriggerBgColor>
				<regexCodeList>
					<string>You peek \w+ and see,</string>
				</regexCodeList>
				<regexCodePropertyList>
					<integer>1</integer>
				</regexCodePropertyList>
				<Trigger isActive="yes" isFolder="no" isTempTrigger="no" isMultiline="no" isPerlSlashGOption="no" isColorizerTrigger="no" isFilterTrigger="no" isSoundTrigger="no" isColorTrigger="no" isColorTriggerFg="no" isColorTriggerBg="no">
					<name>Reopen new roomname capture</name>
					<script>setTriggerStayOpen("Peeking Should Not Move the Map",0)
enableTrigger("Mapper Triggers")
enableTrigger("Newest Roomname Capture")
display(predictedRoomName)</script>
					<triggerType>0</triggerType>
					<conditonLineDelta>0</conditonLineDelta>
					<mStayOpen>0</mStayOpen>
					<mCommand></mCommand>
					<packageName></packageName>
					<mFgColor>#ff0000</mFgColor>
					<mBgColor>#ffff00</mBgColor>
					<mSoundFile></mSoundFile>
					<colorTriggerFgColor>#000000</colorTriggerFgColor>
					<colorTriggerBgColor>#000000</colorTriggerBgColor>
					<regexCodeList>
						<string></string>
					</regexCodeList>
					<regexCodePropertyList>
						<integer>7</integer>
					</regexCodePropertyList>
				</Trigger>
			</Trigger>
		</TriggerGroup>
	</TriggerPackage>
	<TimerPackage />
	<AliasPackage />
	<ActionPackage />
	<ScriptPackage>
		<Script isActive="yes" isFolder="no">
			<name>mudlet.custom_name_search</name>
			<packageName></packageName>
			<script>function mudlet.custom_name_search(lines)
--  cecho("Predicted Room Name At the Top! &lt;cyan&gt;" .. predictedRoomName .. "\n")
  return predictedRoomName
  end</script>
			<eventHandlerList />
		</Script>
	</ScriptPackage>
	<KeyPackage />
	<VariablePackage>
		<HiddenVariables />
	</VariablePackage>
</MudletPackage>
